In the technologically centered society of today, intelligent and non-intelligent components have wide application. In communications, for example, network elements, such as routers, firewalls, servers, switches, gateways, and text and voice communication devices are indispensable. The behavior of these components can be analyzed and modeled not only to identify past and current behavior and root causes thereof but also to predict future behavior.
Monitoring and/or analyzing Service Oriented Architectures (SOA) are common applications for behavior analysis and modelling systems. SOA is not necessarily an architecture but rather a framework that may contain an arbitrary number of architectures. Such monitoring and analyzing systems that are used not only to implement but also to evaluate SOA and the solutions SOAs contain. For example, behavioral analysis and modeling systems are used as expert systems to analyze, correlate, and filter alarms from a converged data environment composed of diverse network elements.
There are many providers of commercial and open source expert systems, expert system development shells, and rule-based logic for SOA applications. Some languages, such as variants of Prolog, have limited extensions (or extensions with limited generality can be written in Prolog itself) that support aspects of second-order logic that in turn support sets of sets or searching sets based on properties. However, Prolog lacks important features needed by and common to expert systems, such as generating explanations and performing uncertainty reasoning.
JRules by ILOG supports rules about rules, which are a second-order feature, but it is not a full implementation of higher-order logic. The lack of a full implementation means that the advantages of descriptive programming, namely, allowing the rule set to generate the behavior by expressing what needs to be done rather than having to program how it is to be done—may not be fully available.
The EMC SMARTS tool provides alarm and event correlation and root cause analysis, but it is not rule-based. It uses a semi-ring representation that supports deterministic, fuzzy logic, temporal and probabilistic modeling of alarming and events. A semi-ring is an algebraic structure, similar to a ring, but it does not have additive inverses. A ring is an algebraic structure for which addition and multiplication are defined. Although EMC claims that its tool is faster than rule-based systems, it does not have the flexibility and generality of rule-based systems.
Second-order and higher-order programming is used in imperative programming—but it is not widely recognized as such. The LISP lambda calculus has used this approach for decades, but it is more procedural programming than logic-based.
Pointers to functions in the C language and virtual functions in C++ are second-order constructs that are place holders for other functions, and the Aspect programming language allows programming statements about JAVA program syntax and even the Aspect language itself. However, logic programmers have been slow to adopt such abstractions, largely for performance reasons.
Largely because the first order predicate logic expressions that are used to implement them have syntactic limitations, current implementations of expert systems tend to be monolithic and limited to “one-size-fits-all-customers.” Such systems are generally implemented in a subset of first-order logic or in temporal logic (based on modal logic) to implement time-based decision-making. The syntactic limitations can make first-order logic cumbersome to use because it requires verbosity that is difficult to maintain, or it is impossible to effectively parameterize and encode unifying and generalizing abstractions across diverse network elements.
There are also semantic limitations imposed by compromises made in the design of the implementation of first order logic that is used to construct the expert system. The semantics are limited owing to compromises made in the implementation of first order logic proof procedure design. Negation is one example taken from Prolog and JRules. Negation is not entirely implemented and does not conform to its usual usage in formal logic. Sometimes negation by failure is used, but typically even that is difficult to completely implement. Other implementations of negation limit search trees rather than fully complement sets.
A further reason that current implementations of expert systems are monolithic is that the data network topology is more easily categorized and reasoned over by using properties of individual networks and properties across networks. Current technology uses a connectivity or relationship view that is not easily abstracted to a more general property-based abstraction. A property based view is inherently second order because it refers to sets of elements. Even more powerful third order abstraction of properties of properties can be cumbersome to express.
Even if the above tools and environments completely supported first-order logic, they are still limited by Gödel's Incompleteness theorems. Gödel showed that, for any reasonably powerful formal system of axioms and inference rules capable of supporting the arithmetic of addition, multiplication, and exponentiation, there are statements that can neither be proved nor disproved based on the axioms and inference rules. A higher level of abstraction is needed to make effective and paradox-free statements about formal mathematical systems. For expert systems, a similar higher level of abstraction is needed to create effectively meta-statements about expert systems that would guide, for example, their generation for specific customers and configurations.